#ifndef GENOSAGEBASECONTAINER_H
#define GENOSAGEBASECONTAINER_H

#include <QObject>
#include <QGraphicsWidget>
#include "../../VisBaseClasses/visbasecontainer.h"
#include "genosagebasewidget.h"

//Forward declarations to avoid circular dependencies
class GenoSage;
class SageVis;

/**GenoSageBaseContainer class.
  * GenoSageBaseContainer will serve as the base class for all visualization containers in GenoSage.
  * It inherits from VisBaseContainer.
  * As with VisBaseContainer, GenoSageBaseContainer stores and manages sets of visbasewidgets.
  * It controls GenoSage specific mechanisms of widget placement, arrangement, and connection mechanisms.
  * Not yet sure if a separate class is needed.
*/
class GenoSageBaseContainer : public VisBaseContainer
{
    Q_OBJECT
public:
    /** GenoSageBaseContainer constructor.
      * Constructor requires genoSagePointer, sageVisPointer and QGraphicsItem parent.
      * The parent will generally be sageVis, but in some cases genoSage containers may be embedded on other widgets.
      */
    explicit GenoSageBaseContainer(QPointer<GenoSage> genoSagePointer, QPointer<SageVis> sageVisPointer, QPointer<VisBaseWidget> parentWidget ,QGraphicsItem *parent);
    
signals:
    
public slots:

private:
    QPointer< GenoSage > genoSagePointer;/**< Pointer to genoSage parent.*/
};

#endif // GENOSAGEBASECONTAINER_H
